In computer networking, the process of network address translation (NAT) includes translating the source and/or destination addresses of Internet protocol or IP packets as they pass through a networking component such as a router or a firewall. Most systems using NAT enable multiple hosts on a private network to access the Internet using a single public IP address. Systems implementing such network address translation may also referred to as network address translators or NATs.
When a private user working on an internal network, such as a small business network, connects to an Internet resource, the user's TCP/IP protocol creates an IP packet. The IP packet is characterized by one or more values which are private to the network and are defined in the IP and transmission control protocol (TCP) or user datagram protocol (UDP) headers. The source host or another network component forwards the IP packet to the network address translator (NAT).
While transmitting the IP packet, the NAT can translate the one or more of the values characterizing the IP packet to values characteristic of a public network, i.e. the Internet. Subsequently the IP packet with the translated value is communicated to the destination address, and all responses to such transmission are communicated back to the NAT.
Currently, communication between end-user applications across a public network, such as the Internet, can be implemented using a relay server. The relay server acts as an interface between one or more applications that seek to communicate with each other. Such an implementation has disadvantages due to increased overhead at the relay server, delay between communicating applications, etc. Furthermore, network situations may require more than one protocol to be employed to effectively communicate between the end-user applications.